package com.haogrgr.test.main; import java.math.BigDecimal; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; /** * Java调用js * * @author desheng.tu * @since 2015年11月2日 上午11:12:17 * */ public class JavaScriptTest { public static void main(String[] args) throws Exception { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); User user = new User(1, "haogrgr"); user.setMoney(BigDecimal.TEN); user.setAge(10); engine.put("user", user); //注意: java7 下,通过 importClass(java.math.BigDecimal) 来引用Java类 // String imports = "importClass(java.math.BigDecimal);";//java7; String imports = "var BigDecimal = Java.type('java.math.BigDecimal');";//java8; engine.eval(imports + "if(user.id == 1) {" + "user.name='xxxxx';" + "user.id = 2;" + "user.money = new BigDecimal(user.age / 4);" + "}"); System.out.println(user); } public static class User { private Integer id; private String name; private Integer age; private BigDecimal money; public User(Integer id, String name) { super(); this.id = id; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public BigDecimal getMoney() { return money; } public void setMoney(BigDecimal money) { this.money = money; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", money=" + money + "]"; } } }